<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<title>SSDB PHP 客户端 API 文档</title>
	<meta name="keywords" content="SSDB, leveldb, zset, key-value, database" />

	<style type="text/css">
	body{
		margin: 4px;
		padding: 0;
		font-size: 13px;
		font-family: tahoma, arial;
		background: #fff;
	}
	table{
		border-collapse: collapse;
	}
	th, td{
		padding: 4px;
		border: 1px solid #999;
	}
	pre{
		padding: 6px;
		background: #eee;
	}
	code{
		color: #c00;
		background: #eee;
	}
	h1{font-size: 220%;}
	h2{font-size: 180%; border-bottom: 1px solid #999;}
	h3{font-size: 150%; border-bottom: 1px solid #ccc;}
	h4{font-size: 110%;}
	#footer{
		margin-top: 40px;
		padding: 8px;
		border-top: 1px solid #ccc;
	}
	</style>
</head>
<body>

<p style="float: right; margin-right: 10px;">
	<a href="https://github.com/ideawu/ssdb-docs" target="_blank">帮助改进此文档</a>
</p>

<h1>SSDB PHP 客户端 API 文档</h1>

<dl>
	<dd>@作者: <a href="http://www.ideawu.net/">ideawu</a></dd>
	<dd>@更新: 2014-11-05</dd>
</dl>

<p>SSDB 是一个高性能 NoSQL 数据库, 支持 zset 数据结构, 用于替代 Redis. 官方网站是 <a href="http://ssdb.io/" target="_blank">http://ssdb.io</a>. 本文档介绍了 SSDB 的 PHP 客户端 API.</p>

<p>注意: SSDB 所使用的名词 "hashmap", "hash", "map" 表示相同的意思.

<h2>类 SimpleSSDB</h2>

<a name="m-quick_start"></a>
<h3><em>快速开始</em></h3>

<pre>
&lt;?php
include_once('SSDB.php');
try{
    $ssdb = new SimpleSSDB('127.0.0.1', 8888);
}catch(SSDBException $e){
    die(__LINE__ . ' ' . $e-&gt;getMessage());
}
$ret = $ssdb-&gt;set('key', 'value');
if($ret === false){
    // error!
}
echo $ssdb-&gt;get('key');
</pre>

<a name="m-error_handling"></a>
<h3>错误处理</h3>

<p>如果无法连接到 SSDB 服务器, SimpleSSDB 将抛出异常. 大多数的方法(除了少数几个例外)通过返回 <code>false</code> 来标明出错. 所以要使用强制等于(===)来判断返回值.</p>

<p><b>如果出现网络错误, 所有的方法将会抛出 SSDBException 异常.</b></p>

<p><b>注意: 因为实现的原因, 请保证所有的参数加起来不超过 10MB 大小.</b></p>



<h2>方法</h2>

<a name="m-construct"></a>
<h3>SimpleSSDB::__construct</h3>

<h4><em>说明</em></h4>
<p>创建 SimpleSSDB 的实例, 并连接到 SSDB 服务器. 如果无法连接到服务器, 将抛出异常.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>host</code> - SSDB 服务器的主机名或者 IP.</dd>
	<dd><code>port</code> - SSDB 服务器的端口号.</dd>
	<dd><code>timeout_ms</code> - 可选, 连接超时时间, 和发送接收数据的超时时间, 单位毫秒. 默认是 2000 ms.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>SimpleSSDB 的实例.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb = new SimpleSSDB('127.0.0.1', 8888);
</pre>



<a name="m-auth"></a>
<h3>auth</h3>
<p>Since: 1.7.0.0</p>

<h4><em>说明</em></h4>
<p>配置密码, 之后将用于向服务器校验. 这个校验不是立即进行的, 而是等你执行第一条命令的时候才发给服务器. <b>注意, 密码是明文传输的!</b></p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>password</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 否则返回 <code>null</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;auth('very-strong-password');
</pre>



<!-- ##############  key value ############## -->

<a name="m-set"></a>
<h3>set</h3>

<h4><em>说明</em></h4>
<p>设置指定 key 的值内容.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>value</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;set('key', 'value');
</pre>


<a name="m-setx"></a>
<h3>setx</h3>

<h4><em>说明</em></h4>
<p>设置指定 key 的值内容, 同时设置存活时间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>value</code> - </dd>
	<dd><code>ttl</code> - 存活时间(秒)</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;setx('key', 'value', 60);
</pre>


<a name="m-setnx"></a>
<h3>setnx</h3>

<h4><em>说明</em></h4>
<p>当 key 不存在时, 设置指定 key 的值内容. 如果已存在, 则不设置.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>value</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 1: value 已经设置, 0: key 已经存在, 不更新.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;setnx('key', 'value');
</pre>


<a name="m-expire"></a>
<h3>expire</h3>

<h4><em>说明</em></h4>
<p>设置 key(只针对 KV 类型) 的存活时间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>ttl</code> - 存活时间(秒)</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>. 如果 key 存在并设置成功, 返回 1, 如果 key 不存在, 返回 0.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;expire('key', 60);
</pre>


<a name="m-ttl"></a>
<h3>ttl</h3>

<h4><em>说明</em></h4>
<p>返回 key(只针对 KV 类型) 的存活时间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 否则返回 key 的存活时间(秒), -1 表示没有设置存活时间.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;ttl('key');
</pre>


<a name="m-get"></a>
<h3>get</h3>

<h4><em>说明</em></h4>
<p>获取指定 key 的值内容.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果 key 不存在则返回 <code>null</code>, 如果出错则返回 <code>false</code>, 否则返回 key 对应的值内容.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;get('key');
</pre>


<a name="m-getset"></a>
<h3>getset</h3>

<h4><em>说明</em></h4>
<p>更新 key 对应的 value, 并返回更新前的旧的 value.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>value</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果 key 不存在则返回 <code>null</code>, 如果出错则返回 <code>false</code>, 否则返回 key 对应的值内容.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;getset('key', 'value');
</pre>


<a name="m-del"></a>
<h3>del</h3>

<h4><em>说明</em></h4>
<p>删除指定的 key.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 其它值表示正常. 你无法通过返回值来判断被删除的 key 是否存在.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;del('key');
</pre>


<a name="m-incr"></a>
<h3>incr</h3>

<p><b>从 1.7.0.1 起, 如果 value 不能转换成整数, *incr 会返回错误.</b></p>

<h4><em>说明</em></h4>
<p>使 <code>key</code> 对应的值增加 <code>num</code>. 参数 <code>num</code> 可以为负数. 如果原来的值不是整数(字符串形式的整数), 它会被先转换成整数.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>num</code> - 可选, 必须是有符号整数, 默认是 1.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回新的值.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;incr('key', 1);
</pre>


<a name="m-exists"></a>
<h3>exists</h3>

<h4><em>说明</em></h4>
<p>判断指定的 key 是否存在.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果存在, 返回 <code>true</code>, 否则返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;exists('key');
</pre>


<a name="m-getbit"></a>
<h3>getbit</h3>

<h4><em>说明</em></h4>
<p>获取字符串内指定位置的位值(BIT).</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>offset</code> - 位偏移</dd>
</dl>

<h4><em>返回值</em></h4>
<p>返回位值(0 或 1), 如果 key 不存在或者偏移超过活字符串长度范围, 返回 0.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;getbit('key', 9);
</pre>


<a name="m-setbit"></a>
<h3>setbit</h3>

<h4><em>说明</em></h4>
<p>设置字符串内指定位置的位值(BIT), 字符串的长度会自动扩展.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>offset</code> - 位偏移, 取值范围 [0, 1073741824]</dd>
	<dd><code>val</code> - 0 或 1</dd>
</dl>

<h4><em>返回值</em></h4>
<p>返回原来的位值. 如果 val 不是 0 或者 1, 返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;setbit('key', 9, 1);
</pre>


<a name="m-bitcount"></a>
<h3>bitcount</h3>

<h4><em>说明</em></h4>
<p>计算字符串的子串所包含的位值为 1 的个数. 若 <code>start</code> 是负数, 则从字符串末尾算起. 若 <code>end</code> 是负数, 则表示从字符串末尾算起(包含). 类似 Redis 的 <a href="http://redis.io/commands/bitcount">bitcount</a></p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>start</code> - 可选, 子串的字节偏移</dd>
	<dd><code>end</code> - 可选</dd>
</dl>

<h4><em>返回值</em></h4>
<p>返回位值为 1 的个数. 出错返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;bitcount('key', 2, 10);
</pre>


<a name="m-countbit"></a>
<h3>countbit</h3>

<h4><em>说明</em></h4>
<p>计算字符串的子串所包含的位值为 1 的个数. 若 <code>start</code> 是负数, 则从字符串末尾算起. 若 <code>size</code> 是负数, 则表示从字符串末尾算起, 忽略掉那么多字节.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>start</code> - 可选, 子串的字节偏移</dd>
	<dd><code>size</code> - 可选, 子串的长度(字节数), 默认为到字符串最后一个字节</dd>
</dl>

<h4><em>返回值</em></h4>
<p>返回位值为 1 的个数. 出错返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;countbit('key', 2, 10);
</pre>


<a name="m-substr"></a>
<h3>substr</h3>

<h4><em>说明</em></h4>
<p>获取字符串的子串. 若 <code>start</code> 是负数, 则从字符串末尾算起. 若 <code>size</code> 是负数, 则表示从字符串末尾算起, 忽略掉那么多字节(类似 PHP 的 <a href="http://php.net/substr">substr()</a>).</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
	<dd><code>start</code> - 可选, int, 子串的字节偏移</dd>
	<dd><code>size</code> - 可选, int, 子串的长度(字节数), 默认为到字符串最后一个字节</dd>
</dl>

<h4><em>返回值</em></h4>
<p>字符串的子串.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;substr('key', 2, 10);
</pre>


<a name="m-strlen"></a>
<h3>strlen</h3>

<h4><em>说明</em></h4>
<p>计算字符串的长度(字节数).</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>返回字符串的长度, key 不存在则返回 0.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;strlen('key');
</pre>


<a name="m-keys"></a>
<h3>keys/rkeys</h3>

<h4><em>说明</em></h4>
<p>列出处于区间 (key_start, key_end] 的 key 列表.</p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key_start</code> - 返回的起始 key(不包含), 空字符串表示 -inf.</dd>
	<dd><code>key_end</code> - 返回的结束 key(包含), 空字符串表示 +inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key 的数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;keys('a', 'z', 10);
</pre>


<a name="m-scan"></a>
<h3>scan</h3>

<h4><em>说明</em></h4>
<p>列出处于区间 (key_start, key_end] 的 key-value 列表.</p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key_start</code> - 返回的起始 key(不包含), 空字符串表示 -inf.</dd>
	<dd><code>key_end</code> - 返回的结束 key(包含), 空字符串表示 +inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-value 的数关联组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;scan('a', 'z', 10);
</pre>

<b>遍历 key-value 对列表</b>
<pre>
$start = ''; 
$limit = 1000;
while(1){
    $kvs = $ssdb-&gt;scan($start, '', $limit);
    if(!$kvs){
        break;
    }
    // do something on key-value pairs...
    $keys = array_keys(array_slice($kvs, -1, 1, true));
    $max_key = $keys[0];
    $start = $max_key;
}
</pre>


<a name="m-rscan"></a>
<h3>rscan</h3>

<h4><em>说明</em></h4>
<p>列出处于区间 (key_start, key_end] 的 key-value 列表, 反向顺序.</p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>key_start</code> - 返回的起始 key(不包含), 空字符串表示 +inf.</dd>
	<dd><code>key_end</code> - 返回的结束 key(包含), 空字符串表示 -inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-value 的数关联组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;rscan('a', 'z', 10);
</pre>


<a name="m-multi_set"></a>
<h3>multi_set</h3>

<h4><em>说明</em></h4>
<p>批量设置一批 key-value.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>kvs</code> - 包含 key-value 的关联数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_set(array(
	'a' =&gt; 1,
	'b' =&gt; 2,
));
</pre>


<a name="m-multi_get"></a>
<h3>multi_get</h3>

<h4><em>说明</em></h4>
<p>批量获取一批 key 对应的值内容.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>keys</code> - 包含 key 的数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-value 的关联数组, 如果某个 key 不存在, 则它不会出现在返回数组中.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_get(array('k1', 'k2'));
</pre>


<a name="m-multi_del"></a>
<h3>multi_del</h3>

<h4><em>说明</em></h4>
<p>批量删除一批 key 和其对应的值内容.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>keys</code> - 包含 key 的数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_del(array('k1', 'k2'));
</pre>




<!-- ##############  map(hashmap) ############## -->

<a name="m-hset"></a>
<h3>hset</h3>

<h4><em>说明</em></h4>
<p>设置 hashmap 中指定 key 对应的值内容.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>key</code> - hashmap 中的 key.</dd>
	<dd><code>value</code> - key 对应的值内容.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hset('h', 'key', 'value');
</pre>


<a name="m-hget"></a>
<h3>hget</h3>

<h4><em>说明</em></h4>
<p>获取 hashmap 中指定 key 的值内容.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>key</code> - hashmap 中的 key.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果 key 不存在则返回 <code>null</code>, 如果出错则返回 <code>false</code>, 否则返回 key 对应的值内容.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hget('h', 'key');
</pre>


<a name="m-hdel"></a>
<h3>hdel</h3>

<h4><em>说明</em></h4>
<p>获取 hashmap 中的指定 key.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>key</code> - hashmap 中的 key.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 其它值表示正常. 你无法通过返回值来判断被删除的 key 是否存在.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hdel('h', 'key');
</pre>


<a name="m-hincr"></a>
<h3>hincr</h3>

<p><b>从 1.7.0.1 起, 如果 value 不能转换成整数, *incr 会返回错误.</b></p>

<h4><em>说明</em></h4>
<p>使 hashmap 中的 <code>key</code> 对应的值增加 <code>num</code>. 参数 <code>num</code> 可以为负数. 如果原来的值不是整数(字符串形式的整数), 它会被先转换成整数.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>key</code> - </dd>
	<dd><code>num</code> - 可选, 必须是有符号整数, 默认是 1.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回新的值.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hincr('h', 'key', 1);
</pre>


<a name="m-hexists"></a>
<h3>hexists</h3>

<h4><em>说明</em></h4>
<p>判断指定的 key 是否存在于 hashmap 中.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>key</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果存在, 返回 <code>true</code>, 否则返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hexists('h', 'key');
</pre>


<a name="m-hsize"></a>
<h3>hsize</h3>

<h4><em>说明</em></h4>
<p>返回 hashmap 中的元素个数.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 否则返回元素的个数, 0 表示不存在 hashmap(空).</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hsize('h');
</pre>


<a name="m-hlist"></a>
<h3>hlist, hrlist</h3>

<h4><em>说明</em></h4>
<p>列出名字处于区间 (name_start, name_end] 的 hashmap.</p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name_start</code> - 返回的起始名字(不包含), 空字符串表示 -inf.</dd>
	<dd><code>name_end</code> - 返回的结束名字(包含), 空字符串表示 +inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 返回返回包含名字的数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hlist('a', 'z', 10);
</pre>


<a name="m-hkeys"></a>
<h3>hkeys</h3>

<h4><em>说明</em></h4>
<p>列出 hashmap 中处于区间 (key_start, key_end] 的 key 列表.</p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>key_start</code> - 起始 key(不包含), 空字符串表示 -inf.</dd>
	<dd><code>key_end</code> - 结束 key(包含), 空字符串表示 +inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key 的数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hkeys('h', 'a', 'z', 10);
</pre>


<a name="m-hgetall"></a>
<h3>hgetall</h3>

<h4><em>说明</em></h4>
<p>返回整个 hashmap.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-value 的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hgetall('h');
</pre>


<a name="m-hscan"></a>
<h3>hscan</h3>

<h4><em>说明</em></h4>
<p>列出 hashmap 中处于区间 (key_start, key_end] 的 key-value 列表.</p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>key_start</code> - 返回的起始 key(不包含), 空字符串表示 -inf.</dd>
	<dd><code>key_end</code> - 返回的结束 key(包含), 空字符串表示 +inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-value 的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hscan('h', 'a', 'z', 10);
</pre>

<p>遍历 hash:</p>

<pre>
$start = '';
while(1){
    $kvs = $ssdb-&gt;hscan($name, $start, '', 10);
    if(!$kvs){
        break;
    }
    // do sth on kvs here
    
    $keys = array_keys($kvs);
    $start = $keys[count($keys) - 1];
}
</pre>


<a name="m-hrscan"></a>
<h3>hrscan</h3>

<h4><em>说明</em></h4>
<p>列出 hashmap 中处于区间 (key_start, key_end] 的 key-value 列表, 反向顺序.</p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>key_start</code> - 返回的起始 key(不包含), 空字符串表示 +inf.</dd>
	<dd><code>key_end</code> - 返回的结束 key(包含), 空字符串表示 -inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-score 的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hrscan('h', 'a', 'z', 10);
</pre>


<a name="m-hclear"></a>
<h3>hclear</h3>

<h4><em>说明</em></h4>
<p>删除 hashmap 中的所有 key.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回删除的 key 的数量.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;hclear('h');
</pre>


<a name="m-multi_hset"></a>
<h3>multi_hset</h3>

<h4><em>说明</em></h4>
<p>批量设置 hashmap 中的 key-value.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>kvs</code> - 包含 key-value 的关联数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_hset('h', array(
	'a' =&gt; 1,
	'b' =&gt; 2,
));
</pre>


<a name="m-multi_hget"></a>
<h3>multi_hget</h3>

<h4><em>说明</em></h4>
<p>批量获取 hashmap 中多个 key 对应的权重值.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>keys</code> - 包含 key 的数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-value 的关联数组, 如果某个 key 不存在, 则它不会出现在返回数组中.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_hget('h', array('k1', 'k2'));
</pre>


<a name="m-multi_hdel"></a>
<h3>multi_hdel</h3>

<h4><em>说明</em></h4>
<p>批量删除 hashmap 中的 key.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - hashmap 的名字.</dd>
	<dd><code>keys</code> - 包含 key 的数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_hdel('h', array('k1', 'k2'));
</pre>




<!-- ##############  zset(sorted set) ############## -->

<a name="m-zset"></a>
<h3>zset</h3>

<h4><em>说明</em></h4>
<p>设置 zset 中指定 key 对应的权重值.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key</code> - zset 中的 key.</dd>
	<dd><code>score</code> - 整数, key 对应的权重值</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zset('z', 'key', 100);
</pre>


<a name="m-zget"></a>
<h3>zget</h3>

<h4><em>说明</em></h4>
<p>获取 zset 中指定 key 的权重值.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key</code> - zset 中的 key.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果 key 不存在则返回 <code>null</code>, 如果出错则返回 <code>false</code>, 否则返回 key 对应的权重值.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zget('z', 'key');
</pre>


<a name="m-zdel"></a>
<h3>zdel</h3>

<h4><em>说明</em></h4>
<p>获取 zset 中的指定 key.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key</code> - zset 中的 key.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 其它值表示正常. 你无法通过返回值来判断被删除的 key 是否存在.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zdel('hz, 'key');
</pre>


<a name="m-zincr"></a>
<h3>zincr</h3>

<h4><em>说明</em></h4>
<p>使 zset 中的 <code>key</code> 对应的值增加 <code>num</code>. 参数 <code>num</code> 可以为负数. 如果原来的值不是整数(字符串形式的整数), 它会被先转换成整数.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key</code> - </dd>
	<dd><code>num</code> - 必须是有符号整数.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回新的值.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zincr('z', 'key', 1);
</pre>


<a name="m-zexists"></a>
<h3>zexists</h3>

<h4><em>说明</em></h4>
<p>判断指定的 key 是否存在于 zset 中.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果存在, 返回 <code>true</code>, 否则返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zexists('z', 'key');
</pre>


<a name="m-zsize"></a>
<h3>zsize</h3>

<h4><em>说明</em></h4>
<p>返回 zset 中的元素个数.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 否则返回元素的个数, 0 表示不存在 zset(空).</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zsize('z');
</pre>


<a name="m-zlist"></a>
<h3>zlist, zrlist</h3>

<h4><em>说明</em></h4>
<p>列出名字处于区间 (name_start, name_end] 的 zset.</p>
	
<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name_start</code> - 返回的起始名字(不包含), 空字符串表示 -inf.</dd>
	<dd><code>name_end</code> - 返回的结束名字(包含), 空字符串表示 +inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 否则返回包含名字的数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zlist('a', 'z', 10);
</pre>


<a name="m-zkeys"></a>
<h3>zkeys</h3>

<h4><em>说明</em></h4>
<p>列出 zset 中的 key 列表. 参见 <code><a href="#m-zscan">zscan()</a></code>.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key_start</code> - 参见 <code><a href="#m-zscan">zscan()</a></code>.</dd>
	<dd><code>score_start</code> - 参见 <code><a href="#m-zscan">zscan()</a></code>.</dd>
	<dd><code>score_end</code> - 参见 <code><a href="#m-zscan">zscan()</a></code>.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key 的数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zkeys('z', '', 1, 100, 10);
</pre>


<a name="m-zscan"></a>
<h3>zscan</h3>

<h4><em>说明</em></h4>
<p>列出 zset 中处于区间 (key_start+score_start, score_end] 的 key-score 列表. 如果 key_start 为空, 那么对应权重值大于或者等于 score_start 的 key 将被返回. 如果 key_start 不为空, 那么对应权重值大于 score_start 的 key, 或者大于 key_start 且对应权重值等于 score_start 的 key 将被返回.</p>

<p>也就是说, 返回的 key 在 <code>(key.score == score_start &amp;&amp; key &gt; key_start || key.score &gt; score_start), 并且 key.score &lt;= score_end</code> 区间. <b>先判断 score_start, score_end, 然后判断 key_start.</b></p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key_start</code> - score_start 对应的 key.</dd>
	<dd><code>score_start</code> - 返回 key 的最小权重值(可能不包含, 依赖 key_start), 空字符串表示 -inf.</dd>
	<dd><code>score_end</code> - 返回 key 的最大权重值(包含), 空字符串表示 +inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-score 的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zscan('z', '', 1, 100, 10);
</pre>

<p>遍历 zset:</p>
<pre>
$key_start = ''; 
$score_start = ''; 
while(1){
    $items = $ssdb-&gt;zscan($zname, $key_start, $score_start, '', 10);
    if(!$items){
        break;
    }   
    foreach($items as $key=&gt;$score){
        // process($key, $score)...

        // 记住最大的元素和它的权重
        $key_start = $key;
        $score_start = $score;
    }   
}
</pre>

<a name="m-zrscan"></a>
<h3>zrscan</h3>

<h4><em>说明</em></h4>
<p>列出 zset 中的 key-score 列表, 反向顺序. 参见 <code><a href="#m-zkeys">zkeys()</a></code>.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key_start</code> - 参见 <code><a href="#m-zkeys">zkeys()</a></code>.</dd>
	<dd><code>score_start</code> - 参见 <code><a href="#m-zkeys">zkeys()</a></code>.</dd>
	<dd><code>score_end</code> - 参见 <code><a href="#m-zkeys">zkeys()</a></code>.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-score 的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zrscan('z', '', 100, 1, 10);
</pre>


<a name="m-zrank"></a>
<h3>zrank, zrrank</h3>

<h4><em>说明</em></h4>
<p><b>注意! 本方法可能会非常慢! 请在离线环境中使用.</b></p>
<p>返回指定 key 在 zset 中的排序位置(排名), 排名从 0 开始. zrrank 获取是是倒序排名.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>key</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
found.</p>
<p>出错则返回 <code>false</code>, <code>null</code> 表示 key 不存在于 zset, 否则返回排名.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zrank('z', 'k1');
</pre>


<a name="m-zrange"></a>
<h3>zrange, zrrange</h3>

<h4><em>说明</em></h4>
<p><b>注意! 本方法在 offset 越来越大时, 会越慢!</b></p>
<p>根据下标索引区间 [offset, offset + limit) 获取 key-score 对, 下标从 0 开始. zrrange 是反向顺序获取.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>offset</code> - 正整数, 从此下标处开始返回. 从 0 开始.</dd>
	<dd><code>limit</code> - 正整数, 最多返回这么多个 key-score 对.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-score 的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zrange('z', 0, 10);
</pre>


<a name="m-zclear"></a>
<h3>zclear</h3>

<h4><em>说明</em></h4>
<p>删除 zset 中的所有 key.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回删除的 key 的数量.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zclear('z');
</pre>


<a name="m-zcount"></a>
<h3>zcount</h3>

<h4><em>说明</em></h4>
<p>返回处于区间 [start,end] key 数量.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>score_start</code> - key 的最小权重值(包含), 空字符串表示 -inf.</dd>
	<dd><code>score_end</code> - key 的最大权重值(包含), 空字符串表示 +inf.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回符合条件的 key 的数量.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zcount('z', 0, 100);
</pre>


<a name="m-zsum"></a>
<h3>zsum</h3>

<h4><em>说明</em></h4>
<p>返回 key 处于区间 [start,end] 的 score 的和.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>score_start</code> - key 的最小权重值(包含), 空字符串表示 -inf.</dd>
	<dd><code>score_end</code> - key 的最大权重值(包含), 空字符串表示 +inf.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回符合条件的 score 的求和.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zsum('z', 0, 100);
</pre>


<a name="m-zavg"></a>
<h3>zavg</h3>

<h4><em>说明</em></h4>
<p>返回 key 处于区间 [start,end] 的 score 的平均值.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>score_start</code> - key 的最小权重值(包含), 空字符串表示 -inf.</dd>
	<dd><code>score_end</code> - key 的最大权重值(包含), 空字符串表示 +inf.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回符合条件的 score 的平均值.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zavg('z', 0, 100);
</pre>


<a name="m-zremrangebyrank"></a>
<h3>zremrangebyrank</h3>

<h4><em>说明</em></h4>
<p>删除位置处于区间 [start,end] 的元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>start</code> - (包含).</dd>
	<dd><code>end</code> -(包含).</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 否则返回被删除的元素个数.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zremrangebyrank('z', 1, 2);
</pre>


<a name="m-zremrangebyscore"></a>
<h3>zremrangebyscore</h3>

<h4><em>说明</em></h4>
<p>删除权重处于区间 [start,end] 的元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>start</code> - (包含).</dd>
	<dd><code>end</code> -(包含).</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 否则返回被删除的元素个数.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zremrangebyscore('z', 1, 2);
</pre>


<a name="m-zpop_front"></a>
<h3>zpop_front</h3>

<h4><em>说明</em></h4>
<p>从 zset 首部删除并返回 `limit` 个元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>limit</code> - 正整数, 最多要删除并返回这么多个 key-score 对.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-score 的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zpop_front('z', 3);
</pre>


<a name="m-zpop_back"></a>
<h3>zpop_back</h3>

<h4><em>说明</em></h4>
<p>从 zset 尾部删除并返回 `limit` 个元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>limit</code> - 正整数, 最多要删除并返回这么多个 key-score 对.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-score 的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;zpop_back('z', 3);
</pre>



<a name="m-multi_zset"></a>
<h3>multi_zset</h3>

<h4><em>说明</em></h4>
<p>批量设置 zset 中的 key-score.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>kvs</code> - 包含 key-score 的关联数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_zset('z', array(
	'a' =&gt; 1,
	'b' =&gt; 2,
));
</pre>


<a name="m-multi_zget"></a>
<h3>multi_zget</h3>

<h4><em>说明</em></h4>
<p>批量获取 zset 中多个 key 对应的权重值.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>keys</code> - 包含 key 的数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回包含 key-score 的关联数组, 如果某个 key 不存在, 则它不会出现在返回数组中.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_zget('z', array('k1', 'k2'));
</pre>


<a name="m-multi_zdel"></a>
<h3>multi_zdel</h3>

<h4><em>说明</em></h4>
<p>批量删除 zset 中的 key.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - zset 的名字.</dd>
	<dd><code>keys</code> - 包含 key 的数组 .</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;multi_zdel('z', array('k1', 'k2'));
</pre>




<a name="m-qsize"></a>
<h3>qsize</h3>

<h4><em>说明</em></h4>
<p>返回队列的长度.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>, 否则返回一个整数, 0 表示队列不存在(或者为空).</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qsize('q');
</pre>


<a name="m-qlist"></a>
<h3>qlist, qrlist</h3>

<h4><em>说明</em></h4>
<p>列出名字处于区间 (name_start, name_end] 的 queue/list.</p>

<p>("", ""] 表示整个区间.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name_start</code> - 返回的起始名字(不包含), 空字符串表示 -inf.</dd>
	<dd><code>name_end</code> - 返回的结束名字(包含), 空字符串表示 +inf.</dd>
	<dd><code>limit</code> - 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 返回返回包含名字的数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qlist('a', 'z', 10);
</pre>


<a name="m-qclear"></a>
<h3>qclear</h3>

<h4><em>说明</em></h4>
<p>清空一个队列.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qclear('q');
</pre>


<a name="m-qfront"></a>
<h3>qfront</h3>

<h4><em>说明</em></h4>
<p>返回队列的第一个元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>, 队列不存在(或者为空)则返回 <code>null</code>, 否则返回一个元素.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qfront('q');
</pre>


<a name="m-qback"></a>
<h3>qback</h3>

<h4><em>说明</em></h4>
<p>返回队列的最后一个元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>, 队列不存在(或者为空)则返回 <code>null</code>, 否则返回一个元素.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qback('q');
</pre>


<a name="m-qget"></a>
<h3>qget</h3>

<h4><em>说明</em></h4>
<p>返回指定位置的元素. 0 表示第一个元素, 1 是第二个 ... -1 是最后一个.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>index</code> - 可传负数.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>, 如果指定位置不存在一个元素, 则返回 <code>null</code>, 否则返回一个元素.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qget('q', -2);
</pre>


<a name="m-qset"></a>
<h3>qset</h3>
<p>Since: 1.7.0.0</p>

<h4><em>说明</em></h4>
<p>更新位于 index 位置的元素. 如果超过现有的元素范围, 会返回错误.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>index</code> - 可传负数.</dd>
	<dd><code>val</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错则返回 <code>false</code>, 其它值表示正常.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qset('q', 0, 'new val');
</pre>


<a name="m-qrange"></a>
<h3>qrange</h3>

<h4><em>说明</em></h4>
<p>返回下标处于区域 [offset, offset + limit] 的元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - queue 的名字.</dd>
	<dd><code>offset</code> - 整数, 从此下标处开始返回. 从 0 开始. 可以是负数, 表示从末尾算起.</dd>
	<dd><code>limit</code> - 正整数, 最多返回这么多个元素.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果出错则返回 <code>false</code>, 否则返回数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qrange('q', 0, 10);
</pre>


<a name="m-qslice"></a>
<h3>qslice</h3>

<h4><em>说明</em></h4>
<p>返回下标处于区域 [begin, end] 的元素. begin 和 end 可以是负数</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>begin</code> - </dd>
	<dd><code>end</code> - </dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>, 否则返回包含元素的数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qslice('q', 0, -1);
</pre>



<a name="m-qpush"></a>
<h3>qpush</h3>

<h4><em>说明</em></h4>
<p>本函数是 <code>qpush_back()</code> 的别名.</p>


<a name="m-qpush_front"></a>
<h3>qpush_front</h3>

<h4><em>说明</em></h4>
<p>往队列的首部添加一个或者多个元素</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>item</code> - 字符串或是字符串数组.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>添加元素之后, 队列的长度, 出错返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qpush_front('q', 'a');
</pre>


<a name="m-qpush_back"></a>
<h3>qpush_back</h3>

<h4><em>说明</em></h4>
<p>往队列的尾部添加一个或者多个元素</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>item</code> - 字符串或是字符串数组.</dd>
</dl>

<h4><em>返回值</em></h4>
<p>添加元素之后, 队列的长度, 出错返回 <code>false</code>.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qpush_back('q', 'a');
</pre>


<a name="m-qpop"></a>
<h3>qpop</h3>

<h4><em>说明</em></h4>
<p>本函数是 <code>qpop_front()</code> 的别名.</p>


<a name="m-qpop_front"></a>
<h3>qpop_front</h3>

<h4><em>说明</em></h4>
<p>从队列首部弹出一个或者多个元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>size</code> - 可选, 最多从队列弹出这么多个元素</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>. 当 <code>size</code> 未指定或者小于等于 1 时, 队列不存在(或者为空)则返回 <code>null</code>, 否则删除并返回一个元素. 当 <code>size</code> 大于等于 2 时, 返回一个数组包含弹出的元素.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qpop_front('q');
</pre>


<a name="m-qpop_back"></a>
<h3>qpop_back</h3>

<h4><em>说明</em></h4>
<p>从队列尾部弹出一个或者多个元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>size</code> - 可选, 最多从队列弹出这么多个元素</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>. 当 <code>size</code> 未指定或者小于等于 1 时, 队列不存在(或者为空)则返回 <code>null</code>, 否则删除并返回一个元素. 当 <code>size</code> 大于等于 2 时, 返回一个数组包含弹出的元素.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qpop_back('q');
</pre>


<a name="m-qtrim_front"></a>
<h3>qtrim_front</h3>

<h4><em>说明</em></h4>
<p>从队列头部删除多个元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>size</code> - 最多从队列删除这么多个元素</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>. 返回被删除的元素数量.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qtrim_front('q', 3);
</pre>


<a name="m-qtrim_back"></a>
<h3>qtrim_back</h3>

<h4><em>说明</em></h4>
<p>从队列头部删除多个元素.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>name</code> - </dd>
	<dd><code>size</code> - 最多从队列删除这么多个元素</dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>. 返回被删除的元素数量.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;qtrim_back('q', 3);
</pre>





<!-- ##############  other ############## -->

<a name="m-batch"></a>
<h3>batch, exec</h3>

<h4><em>说明</em></h4>
<p>批量执行一批命令. 批量命令可以减少客户端和服务器之间的交互延时, 能提高性能和响应速度.</p>

<p><b>这个特性是在客户端实现的, ssdb-server 不支持批量命令, 而是当作独立的一个命令一个命令地执行. 所有命令和参数的大小应小于 10MB.</b></p>

<h4><em>参数</em></h4>
<dl>
	<dd></dd>
</dl>

<h4><em>返回值</em></h4>
<p>如果 <code>exec()</code> 出错则返回 <code>false</code>, 否则返回一个数组包含对应每一条命令的结果.</p>

<h4><em>示例</em></h4>
<pre>
$ret = $ssdb-&gt;batch()
	-&gt;set('a', 1)
	-&gt;get('a')
	-&gt;exec();
// 或者
$ssdb-&gt;batch();
$ssdb-&gt;set('a', 1);
$ssdb-&gt;get('a');
$ret = $ssdb-&gt;exec();
</pre>


<a name="m-dbsize"></a>
<h3>dbsize</h3>

<h4><em>说明</em></h4>
<p>返回数据库的<b>估计</b>大小, 以字节为单位. 如果服务器开启了压缩, 返回压缩后的大小.</p>

<h4><em>参数</em></h4>
<dl>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>. 返回数据库大小.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;dbsize();
</pre>


<a name="m-info"></a>
<h3>info</h3>

<h4><em>说明</em></h4>
<p>返回服务器的信息.</p>

<h4><em>参数</em></h4>
<dl>
	<dd><code>opt</code> - 可选, 可以是 <code>cmd, leveldb</code></dd>
</dl>

<h4><em>返回值</em></h4>
<p>出错返回 <code>false</code>. 返回服务器信息的关联数组.</p>

<h4><em>示例</em></h4>
<pre>
$ssdb-&gt;info();
</pre>



<div id="footer">
	Copyright&copy;2013,2014 ideawu. All rights reserved.
</div>

</body>
</html>
